package com.hongyi.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.hongyi.pojo.ResultObject;
import com.hongyi.pojo.TStudent;
import com.hongyi.pojo.User;
import com.hongyi.service.IUserService;
import com.hongyi.service.TStudentService;
import com.hongyi.util.Constant;

@RequestMapping("/user")
@RestController //标识为返回类型为Json的控制器
public class UserController {
	
	//自动注入服务类
	@Autowired
	private IUserService userService;
	
	@Autowired
	private TStudentService studentService;


	/**
	 * login登录
	 * @param user
	 * @param request
	 * @return
	 */
	@RequestMapping("/login")
	public ResultObject<List<User>> getUsers(User user, HttpServletRequest request) {
		// 使用@RequestMapping注解将HTTP请求映射到这个方法，URL路径为"/login"
		// 这个方法接受一个User对象和HttpServletRequest对象

		// 查询用户列表
		List<User> list = userService.getUser(user);

		// 创建一个ResultObject对象，用于封装响应数据
		ResultObject<List<User>> rs = new ResultObject<List<User>>();

		if (list.isEmpty()) {
			// 如果查询结果为空，表示登录失败
			// 设置状态码和提示消息
			rs.setCode(Constant.FAILURE_RETUEN_CODE); // 状态码显示失败
			rs.setMsg("登录失败");
		} else {
			// 如果查询结果不为空，表示登录成功
			// 设置状态码和提示消息
			rs.setCode(Constant.SUCCESS_RETUEN_CODE); // 状态码显示成功

			// 将用户信息存储在会话中，通常用于在会话期间保持用户的登录状态 也就是存储在Seesion中
			request.getSession().setAttribute("user", list.get(0));

			rs.setMsg("登录成功");
		}

		// 将查询结果设置为响应数据
		rs.setData(list);

		// 返回ResultObject对象，该对象将被转换为JSON并作为HTTP响应发送给客户端
		return rs;
	}

	/**
	 * 退出
	 * @param request
	 * @return
	 */
	@RequestMapping("/loginOut")
	public ResultObject<Object> loginOut(HttpServletRequest request) {
		// 使用@RequestMapping注解将HTTP请求映射到这个方法，URL路径为"/loginOut"
		// 这个方法接受一个HttpServletRequest对象

		// 创建一个ResultObject对象，用于封装响应数据
		ResultObject<Object> rs = new ResultObject<Object>();

		// 从会话中移除名为"user"的属性，即将用户注销
		request.getSession().removeAttribute("user");

		// 设置状态码和提示消息，表示退出成功
		rs.setCode(Constant.SUCCESS_RETUEN_CODE);
		rs.setMsg("退出成功");

		// 返回ResultObject对象，该对象将被转换为JSON并作为HTTP响应发送给客户端
		return rs;
	}


	/**
	 * 学生角色登录
	 * @param user
	 * @param request
	 * @return
	 */
    @RequestMapping("/studentLogin")
    public ResultObject<List<TStudent>> studentLogin(User user,HttpServletRequest request) {
    	//查询用户列表
    	TStudent student=new TStudent();
    	student.setStudentNo(Integer.parseInt(user.getUserName()));
    	student.setStuPass(user.getPassword());
    	List<TStudent> list= studentService.selectloginStudent(student);
    	ResultObject<List<TStudent>> rs=new ResultObject<List<TStudent>>();
    	if(list.isEmpty()) {
    		//状态码
        	rs.setCode(Constant.FAILURE_RETUEN_CODE);
        	//提示
        	rs.setMsg("登录失败");
    	}else {
    		//状态码
        	rs.setCode(Constant.SUCCESS_RETUEN_CODE);
        	request.getSession().setAttribute("student", list.get(0));
        	//提示
        	rs.setMsg("登录成功");
    	}    	
    	//数据
    	rs.setData(list);
        return rs;
    }

	/**
	 * 学生角色退出
	 * @param request
	 * @return
	 */
    @RequestMapping("/studentloginOut")
    public ResultObject<Object> studentloginOut(HttpServletRequest request) {
    	//查询用户列表
    	ResultObject<Object> rs=new ResultObject<Object>();
    	request.getSession().removeAttribute("student");	
    	//数据
    	rs.setCode(Constant.SUCCESS_RETUEN_CODE);
    	rs.setMsg("退出成功");
        return rs;
    }
    
    
 
}
